package mysql8学习.高级.第07章_InnoDB数据存储结构存储;

/**
 * 用户记录(不确定)
 * 这些记录  按照指定的格式  一条条以单链表保存
 * 用户记录里的一条条数据如何记录？
 *    记录的额外信息
 *       变长字段长度列表
 *       NULL值列表
 *       记录头信息（5个字节）（40位）
 *           ● 预留位1（1位）
 *           ● 预留位2（1位）
 *           ● delete_mask:标记该记录是否被删除（1位）
 *                  值为0:代表记录并没有被删除
 *                  值为1:代表记录被刪除掉了.
 *                  被删除的记录为什么还在页中存储呢?
 *                  你以为它删除了，可它还在真实的磁盘上。
 *                  这些被删除的记录之所以不立即从磁盘上移除，
 *                  是因为移除它们之后其他的记录在磁盘上需要重新排列，导致性能消耗。
 *                  所以只是打一个删除标记而已，所有被删除掉的记录都会组成一个所谓的垃圾链表，
 *                  在这个链表中的记录占用的空间称之为可重用空间，之后如果有新记录插入到表中的话，
 *                  可能把这些被删除的记录占用的存储空间覆盖掉。
 *           ● min_rec_mask：B+树的每层非叶子节点中的最小记录都会添加该标记（1位）
 *           ● n_owned：表示当前记录 所在的组 拥有的记录数（4位）
 *                   会在最大记录上写上记录数，但是由于存在两个虚拟记录(最大最小记录)
 *                   最小记录自成一组
 *                   最后的几条真实数据记录和最大记录一组
 *           ● heap_no：表示当前记录在记录堆的位置信息（13位）
 *                  MySQL会自动给每个页里加了两个记录，
 *                  由于这两个记录并不是我们自己插入的，
 *                  所以有时候也称为伪记录或者虚拟记录。
 *                  这两个伪记录一个代表最小记录，一个代表最大记录
 *                  最小记录和最大记录的heap_no值分别是0和1，
 *                  也就是说它们的位置最靠前。
 *           ● record_type：表示当前记录的类型，（3位）
 *                   0.表示普通记录，
 *                   1.表示B+树非叶节点记录，
 *                   2.表示最小记录，
 *                   3.表示最大记录
 *           ● next_record：表示下一条记录的相对位置（16位）
 *                  地址偏移量  从当前位置从后找多少到一条记录
 *
 *    如果删除了中间一条信息
 *      前一条的表示一条记录就会改变
 *      标记该记录是否被删除（1位） 从0改到1
 *     最大记录  中有一个地方存储 本组 一共有多少记录  会减一
 *     最小纪录  没在最大记录的保存有多少记录里  """页目录(不确定)"""
 *     所以最大记录的2那个位置
 *
 *    记录信息(表的每一个列)
 *        列1  值1
 *        列2  值2
 *        列3  值3 ....
 *
 *
 *
 */
public class B4_页的用户记录 {
}
